package com.sz.biz.pay.account.service;

import com.sz.biz.pay.account.entity.Transaction;
import com.sz.common.base.dto.QResultDto;
import com.sz.common.base.dto.QueryParams;

import java.util.List;

/**
 * Function: TODO: ADD FUNCTION <br>
 * Author: siqishangshu <br>
 * Date: 2017-11-03 10:49:00
 */
public interface TransactionService {

    /**
     * 新增记录，返回id
     *
     * @param entry
     * @return id
     */
    int insert(Transaction entry);

    /**
     * 通过id 删除
     *
     * @param id
     * @return
     */
    int delete(String id);

    /**
     * 多id 删除多条记录
     *
     * @param ids
     * @return
     */
    int delete(List ids);

    /**
     * id 更新记录
     *
     * @param entry
     * @return boolean
     */
    int update(Transaction entry);

    /**
     * id 查找
     *
     * @param id
     * @return list
     */
    Transaction select(String id);

    /**
     * 多id 查找
     *
     * @param ids
     * @return list
     */
    List<Transaction> selectList(List ids);

    /**
     * 查询所有记录
     *
     * @return list
     */
    List<Transaction> selectAll();

    /**
     * 搜索条件查找
     *
     * @param param
     * @return QResultDto
     */
    QResultDto selectList(QueryParams param);

    /**
     * 搜索条件查找结果统计
     *
     * @param param
     * @return int
     */
    int count(QueryParams param);

    /**
     * 全表数据统计
     *
     * @return int
     */
    int countAll();

    /**
     * 根据billNo查询账单信息
     *
     * @param billNo
     * @return
     */
    Transaction findByBillNo(String billNo);

    /**
     * 通过操作流水号获取流水信息
     *
     * @param thirdLogNo
     * @return
     */
    Transaction getTransactionByThirdLogNo(String thirdLogNo);

    /**
     * 根据thirdLogNo查询账单信息
     *
     * @param thirdLogNo
     * @return
     */
    Transaction findByThirdLogNo(String thirdLogNo);

    /**
     * 根据条件查询账单信息
     *
     * @param params
     * @return QResultDto
     */
    QResultDto findByQuery(QueryParams params);

    /**
     * 根据状态和类型查询账单信息
     *
     * @param tranStatus
     * @param tranType
     * @return list
     */
    List<Transaction> findByTranStatusAndTranType(int tranStatus, int tranType);

    /**
     * 批量更新支付状态
     *
     * @param orderList
     * @return
     */
    void batchUpdate(List<String> orderList);
}
